package com.hcss.sys.role.service;

import com.hcss.sys.role.model.HcSysRole;
import com.hcss.sys.role.model.HcSysRoleuser;
import com.hcss.sys.role.model.vo.HcSysRolemenuVO;

import java.util.List;
import java.util.Map;


/**
 * @描述: Role提供服务接口
 * @作者: fangtao
 * @创建日期: 2019-01-08 10:46:19
 */
public interface RoleService {
	/**
	 * 校验code唯一性
	 * @param code
	 * @param id
	 * @return
	 */
	boolean checkCodeUnique(String code, String id);

	/**
	 * 插入一个新的model
     *
	 * @param model 要插入的model
	 * @return
	 */
	void insertModel(HcSysRole model);
	
	/**
	 * 更新一个model
     *
	 * @param model 要更新的model
	 * @return
	 */
    void updateModel(HcSysRole model);
	
	/**
	 * 根据id删除数据
     *
	 * @param model 要删除的角色
	 * @return
	 */
    void deleteById(HcSysRole model);
	
	/**
	 * 通过主键id获取数据
     *
	 * @param id 主键
	 * @return
	 */
	HcSysRole selectByPK(String id);

	/**
	 * 获取全部角色信息
	 * @return
	 */
	List<HcSysRole> selectAll();

	/**
	 * 根据菜单获取关联的角色
	 * @param roleMenuVO
	 * @return
	 */
	List<HcSysRole> selectByMenu(HcSysRolemenuVO roleMenuVO);

	/**
	 * 保存角色菜单信息
	 * @param model
	 */
	void saveRoleMenu(HcSysRolemenuVO model);

	/**
	 * 删除角色菜单信息
	 * @param model
	 */
	void deleteRoleMenu(HcSysRolemenuVO model);

	/**
	 * 保存角色用户信息
	 * @param model
	 */
	void saveRoleUser(HcSysRoleuser model);

	/**
	 * 删除角色用户信息
	 * @param model
	 */
	void deleteRoleUser(HcSysRoleuser model);

	/**
	 * 批量保存角色菜单
	 * @param roleid
	 * @param menuidList
	 */
	void batchSaveRoleMenu(String roleid, List<String> menuidList);

	/**
	 * 根据角色id删除角色菜单关联关系
	 * @param roleid
	 */
	void deleteRoleMenuByRoleid(String roleid);

	/**
	 * 根据角色id获取绑定用户集合
	 * @param roleid
	 * @return
	 */
	List<Map<String, String>> selectUserByRole(String roleid);

    /**
     * 判断{userid}是否有{menuUrl}的角色权限
     * @param userid
     * @param menuUrl
     * @return
     */
	boolean isUserHaveMenuRole(String userid, String menuUrl);
}
